import { ValueTransformer } from 'typeorm';
import { ImageUtil } from '../utils/image.util';

export class ImageUrlTransformer implements ValueTransformer {
  // 存储到数据库时转换为相对路径
  to(value: string): string {
    if (!value) return '';
    return ImageUtil.getRelativePath(value);
  }

  // 从数据库读取时转换为完整 URL
  from(value: string): string {
    if (!value) return '';
    return ImageUtil.getFullUrl(value);
  }
}

export class ImageArrayTransformer implements ValueTransformer {
  // 存储到数据库时转换为相对路径数组的 JSON 字符串
  to(value: string[]): string {
    if (!value) return '[]';
    const relativePaths = value.map((url) => ImageUtil.getRelativePath(url));
    return JSON.stringify(relativePaths);
  }

  // 从数据库读取时转换为完整 URL 数组
  from(value: string): string[] {
    if (!value) return [];
    const paths = JSON.parse(value);
    return paths.map((path) => ImageUtil.getFullUrl(path));
  }
}
